Small, mobile computing devices such as personal desktop assistants including hand-held and palm-top computers and the like are becoming important and popular user tools. In general, they are becoming small enough to be extremely convenient while consuming less and less battery power, and at the same time becoming capable of running more and more powerful applications.
Although such devices continue to shrink in size, size limitations are being reached as a result of human limitations. For example, a full character keyboard that enables user data input cannot be so small that human fingers cannot depress the individual keys thereon. As a result, the size of such devices (e.g., palm-top computers) has become limited to that which can accommodate a full character keyboard for an average user.
One solution to reducing the size of the portion of the device that receives user input is to provide a touch-sensitive display, and thereby substantially eliminate the need for a physical keyboard. To this end, an application program such as a word processor displays a keyboard, whereby the user enters characters by touching the screen at locations corresponding to the displayed keys. Of course, touch screen devices can also be used simultaneously with devices having a physical keyboard, whereby characters can also be entered by manually pressing the keys of the physical keyboard.
While a touch-screen device serves to provide a suitable means of user data entry, the data entry panel is typically part of the application program, i.e., each application needs to develop its own touch-sensitive interface. As a result, a substantial amount of duplication takes place. For example, both the word processor and a spreadsheet program require alphanumeric keyboard input, whereby each provides its own touch-screen keyboard interface. Other types of programs, such as a calculator program, need a numeric keypad with additional keys representing mathematical operations. This makes each program larger, more complex and consumes computer system resources.
Alternatively, the operating system can supply all the virtual keyboards and thus eliminate the redundancy, however this limits applications to using only those virtual keyboards supplied by the operating system. Newer applications (e.g., those added by plug-in modules) are unable to provide an input mechanism that is more tailored to its particular needs. For example, a new paintbrush program may need its own graphical input screen. In sum, there is a tradeoff between flexibility and efficiency that is inherent with present user data input mechanisms.